package com.yunxin.customui.myinterface;

import com.yunxin.customui.bean.UIComponentConfig;

import java.io.Serializable;
import java.util.List;

/**
 * 前台事件处理策略接口
 *
 * @author lee
 * @date 2021/10/07
 */
public interface IEventHandler<T extends UIComponentConfig, Param>  extends Serializable{

    /**
     * 事件处理
     *
     * @param config 配置
     * @param param  参数
     * @return {@link List<EventHandlerResult>}
     */
    List<EventHandlerResult> eventHandle(T config, Param param);

    /**
     * 事件处理结果类
     */
    class EventHandlerResult implements Serializable {
        /**
         * 前台响应类型
         */
        ResultEventType resultEventType;
        /**
         * 事件处理结果值
         */
        Object result;

        public EventHandlerResult(ResultEventType resultEventType, Object result) {
            this.resultEventType = resultEventType;
            this.result = result;
        }
    }

    enum ResultEventType implements Serializable {
        //打开新窗口
        //刷新组件
        //提醒
        Open,Refresh,Tip
    }

}
